package com.reform.pojo.project;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import java.time.LocalDate;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.reform.utils.VerifycUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * <p>
 * 项目基本信息
 * </p>
 *
 * @author mortale
 * @since 2021-07-20
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="Project对象", description="项目基本信息")
public class Project implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "批次编号")
    @TableField("batch_id")
    private String batchId;

    @ApiModelProperty(value = "教研项目编号")
    @TableId(value = "pro_id")
    private String proId;

    @ApiModelProperty(value = "教研项目名称")
    @TableField("pro_name")
    private String proName;

    @ApiModelProperty(value = "项目审核(-1 申报 0  暂存  1   提交    2  学院通过  3 专家审核    4  学校通过   5   驳回  6  学院不通过   7 学校不通过  8 院级阶段检查通过 9 院级阶段检查不通过  10 校级阶段检查通过 11 校级阶段检查不通过 12 学院结项检查通过 13 学院结项不通过 14 专家结项通过 15学校结项通过 16 学校结项不通过 17校级同意延期 18校级不同意延期 19 申请延期 20 院级同意延期 21 院级不同意延期)")
    @TableField("pro_approval")
    private Integer proApproval;

    @ApiModelProperty(value = "批次级别编号")
    @TableField("level_id")
    private Integer levelId;

    @ApiModelProperty(value = "项目类别")
    @TableField("classification")
    private String classification;

    @ApiModelProperty(value = "项目学科")
    @TableField("pro_subject")
    private String proSubject;

    @ApiModelProperty(value = "项目留存电话(办公电话)")
    @TableField("pro_telephone")
    private String proTelephone;

    @ApiModelProperty(value = "项目预留电话(手机)")
    @TableField("pro_phone")
    private String proPhone;

    @ApiModelProperty(value = "项目预留邮箱")
    @TableField("pro_email")
    private String proEmail;

    @ApiModelProperty(value = "项目开始时间(yyyy-MM)")
    @TableField("pro_startdate")
    private String proStartdate;

    @ApiModelProperty(value = "项目结束时间(yyyy-MM)")
    @TableField("pro_enddate")
    private String proEnddate;

    @ApiModelProperty(value = "项目问题分析(副文本形式)")
    @TableField("pro_analysis")
    private String proAnalysis;

    @ApiModelProperty(value = "项目存在的问题(副文本形式)")
    @TableField("pro_problem")
    private String proProblem;

    @ApiModelProperty(value = "项目预期成果(副文本形式)")
    @TableField("pro_expection")
    private String proExpection;

    @ApiModelProperty(value = "项目总体安排及进度(副文本形式)")
    @TableField("pro_arrange")
    private String proArrange;

    @ApiModelProperty(value = "项目已有的工作成果(副文本形式)")
    @TableField("pro_results")
    private String proResults;

    @ApiModelProperty(value = "工作委员会意见(副文本形式)")
    @TableField("pro_committee")
    private String proCommittee;

    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "委员会时间(yyyy-MM-dd)")
    @TableField("committee_date")
    private LocalDate committeeDate;

    @ApiModelProperty(value = "专家审批意见(副文本形式)")
    @TableField("pro_experts")
    private String proExperts;

    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "专家时间(yyyy-MM-dd)")
    @TableField("experts_date")
    private LocalDate expertsDate;

    @ApiModelProperty(value = "学习审批意见(副文本形式)")
    @TableField("pro_school")
    private String proSchool;

    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "学校时间(yyyy-MM-dd)")
    @TableField("school_date")
    private LocalDate schoolDate;

    @ApiModelProperty(value = "项目申报人所在部门")
    @TableField("pro_department")
    private String proDepartment;

    @ApiModelProperty(value = "项目申报人所在部门编号")
    @TableField("pro_dep_id")
    private Integer proDepId;

    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "项目创建时间(yyyy-MM-dd)")
    @TableField("create_date")
    private LocalDate createDate;

    @ApiModelProperty(value = "学院分数(用于排序)")
    @TableField(value = "department_score", fill = FieldFill.UPDATE)
    private Integer departmentScore;

    @ApiModelProperty(value = "延期原因")
    @TableField("delay_cause")
    private String delayCause;
}
